/*
* This file is a part of the open-eBackup project.
* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
* If a copy of the MPL was not distributed with this file, You can obtain one at
* http://mozilla.org/MPL/2.0/.
*
* Copyright (c) [2024] Huawei Technologies Co.,Ltd.
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
*/
package openbackup.data.access.framework.protection.plugin.handler;

import com.fasterxml.jackson.core.type.TypeReference;

import openbackup.data.protection.access.provider.sdk.plugin.CollectableConfig;
import openbackup.data.protection.access.provider.sdk.plugin.ResourceExtensionHandler;
import openbackup.system.base.common.utils.json.JsonUtil;

import org.springframework.stereotype.Component;

import java.util.Collections;
import java.util.List;

/**
 * The CollectableConfigHandler
 *
 */
@Component
public class CollectableConfigHandler extends ResourceExtensionHandler<Object, List<CollectableConfig>> {
    @Override
    public String getNamePath() {
        return "functions.connection.dependency";
    }

    @Override
    public List<CollectableConfig> handle(final Object configObj, final Object params) {
        if (configObj == null) {
            return Collections.emptyList();
        }
        return JsonUtil.read(JsonUtil.json(configObj), new TypeReference<List<CollectableConfig>>() {
        });
    }
}